var SCBedTime = {
hours: 0,
minutes: 0,
meridiem: "AM"
};
(function () {
new IosSelector({
el: '.time-picker__hours',
type: 'infinite',
source: createArray(12, 1),
count: 16,
value: 6,
sensitivity: 3,
// onCycle: function(direction){
// var pos = meridiemSelector.scroll ? 0 : 1;
// meridiemSelector.select(phases[pos].value);
// },
onAnimationStart: function (selected) {
SCBedTime.hours = selected.value;
},
onChange: function (selected) {
SCBedTime.hours = selected.value;
}
});
new IosSelector({
el: '.time-picker__minutes',
type: 'infinite',
source: createArray(60, 0, true),
count: 16,
value: 30,
sensitivity: 3,
// onCycle: function(direction){
// var pos = hourSelector.scroll;
// pos += direction == "up" ? 1 : -1;
// pos %= hours.length;
// if (pos < 0) {
// pos = hours.length + pos;
// }
// hourSelector.select(hours[pos].value);
// },
onAnimationStart: function (selected) {
SCBedTime.minutes = selected.value;
},
onChange: function (selected) {
SCBedTime.minutes = selected.value;
}
});
new IosSelector({
el: '.time-picker__meridiem',
type: 'normal',
source: [{ value: "AM", text: "AM" }, { value: "PM", text: "PM" }],
count: 16,
value: "AM",
sensitivity: 3,
wheelSensitivity: 0.05,
onChange: function (selected) {
SCBedTime.meridiem = selected.value;
}
});
function createArray(num, addValue, format) {
var res = [],
value = 0,
text = "";
addValue = addValue || 0;
for (var i = 0; i < num; i++) {
value = i + addValue;
text = (format && value < 10) ? "0" + value : value;
res.push({ value: value, text: text });
}
return res;
}
})();
(function () {
var timeElem = document.querySelector("#timeElem"),
calcElem = document.querySelector("#calcElem"),
hiddenCls = "content-section_hidden";
preventCls = "content-section_prevent";
addEventListener("#calcBedTime", function () {
fill("bedtime");
showElem(calcElem, timeElem);
});
addEventListener("#calcWakeTime", function () {
fill("wakeup");
showElem(calcElem, timeElem);
});
addEventListener("#backButton", function () {
showElem(timeElem, calcElem);
});
function addEventListener(id, fn) {
var elem = document.querySelector(id),
_moved = false;
elem.addEventListener("touchstart", listener);
elem.addEventListener("click", listener);
function listener(event) {
if (event.cancelable && event.type != "touchstart") {
prevent(event);
}
if (event.type == "touchstart") {
_moved = false;
elem.addEventListener("touchend", listener);
document.addEventListener("touchmove", touchmove);
return;
}
if (event.type == "touchend") {
(_moved ? prevent : fn).bind(this)(event);
elem.removeEventListener("touchend", listener);
document.removeEventListener("touchmove", touchmove);
} else {
fn.bind(this)(event);
}
}
function prevent(event) {
event.preventDefault();
}
function touchmove() {
_moved = true;
}
}
function showElem(elem, hideElem) {
elem.addEventListener("transitionend", transitionEnd);
hideElem.classList.add(hiddenCls);
hideElem.classList.add(preventCls);
elem.classList.add(preventCls);
elem.classList.remove(hiddenCls);
function transitionEnd(event) {
if (event.target != elem && event.propertyName != "opacity") {
return;
}
elem.classList.remove(preventCls);
elem.removeEventListener("transitionEnd", transitionEnd);
}
}
function fill(type) {
var titleElem = document.querySelector("#titleElem"),
timeSpan = document.querySelector("#timeSpan"),
bedText = document.querySelector("#bedTextElem"),
wakeText = document.querySelector("#wakeTextElem"),
textHiddenCls = "time-view__text_hidden";
if (type == "bedtime") {
titleElem.innerHTML = titleElem.dataset.titleBed;
timeSpan.innerHTML = formatTime(SCBedTime);
bedText.classList.remove(textHiddenCls);
wakeText.classList.add(textHiddenCls);
} else {
titleElem.innerHTML = titleElem.dataset.titleWakeup;
bedText.classList.add(textHiddenCls);
wakeText.classList.remove(textHiddenCls);
}
fillList(type);
}
function fillList(type) {
var timeList = document.querySelector("#timeList"),
template = '
{{time}}',
suggestedClass = "time-list__item_suggested",
curItem = "";
timeList.innerHTML = "";
for (var i = 0; i < 6; i++) {
curItem = template;
curItem = curItem.replace("{{cls}}", i < 2 ? " " + suggestedClass : "");
if (type == "bedtime") {
curItem = curItem.replace("{{time}}", formatTime(SCBedTime, (6 - i) * -1.5 - .25));
} else {
curItem = curItem.replace("{{time}}", formatTime(getTime(), (6 - i) * 1.5 + .25));
}
timeList.innerHTML += curItem;
}
}
function formatTime(time, addHours) {
var allMinutes = time.hours * 60 + time.minutes,
str = "",
hours = 0,
minutes = 0,
meridiem = time.meridiem;
allMinutes += addHours ? addHours * 60 : 0;
if (allMinutes < 0) {
allMinutes = 720 + allMinutes;
meridiem = meridiem == "AM" ? "PM" : "AM";
} else if (allMinutes > 720) {
allMinutes -= 720;
meridiem = meridiem == "AM" ? "PM" : "AM";
}
hours = parseInt(allMinutes / 60);
hours = !hours ? 12 : hours;
minutes = allMinutes % 60;
minutes = minutes >= 10 ? minutes : "0" + minutes;
str = hours + ":" + minutes + " " + meridiem;
return str;
}
function getTime() {
var time = new Date(),
hours = time.getHours(),
minutes = time.getMinutes(),
meridiem = "AM";
if (hours > 11) {
hours -= 12;
meridiem = "PM";
}
return {
hours: hours,
minutes: minutes,
meridiem: meridiem,
}
}
})();
//focus-visible
(function () { function applyFocusVisiblePolyfill(e) { function t(e) { return !!(e && e !== document && "HTML" !== e.nodeName && "BODY" !== e.nodeName && "classList" in e && "contains" in e.classList) } function n(e) { var t = e.type, n = e.tagName; return !("INPUT" !== n || !L[t] || e.readOnly) || ("TEXTAREA" === n && !e.readOnly || !!e.isContentEditable) } function o(e) { e.classList.contains("focus-visible") || (e.classList.add("focus-visible"), "input" == e.tagName.toLowerCase() && e.parentNode.classList.add("focus-visible"), "label" == e.parentNode.tagName.toLowerCase() && e.parentNode.classList.add("focus-visible"), e.classList.contains("notify__close") && e.parentNode.classList.add("focus-visible"), e.setAttribute("data-focus-visible-added", "")) } function i(e) { e.hasAttribute("data-focus-visible-added") && (e.classList.remove("focus-visible"), e.parentNode && (e.parentNode.classList.remove("focus-visible"), e.parentNode.parentNode && e.parentNode.parentNode.classList.remove("focus-visible")), e.removeAttribute("data-focus-visible-added")) } function s(n) { n.metaKey || n.altKey || n.ctrlKey || (t(e.activeElement) && o(e.activeElement), v = !0) } function d(e) { v = !1 } function a(e) { t(e.target) && (v || n(e.target)) && o(e.target) } function u(e) { t(e.target) && (e.target.classList.contains("focus-visible") || e.target.hasAttribute("data-focus-visible-added")) && (f = !0, window.clearTimeout(E), E = window.setTimeout(function () { f = !1 }, 100), i(e.target)) } function c(e) { "hidden" === document.visibilityState && (f && (v = !0), r()) } function r() { document.addEventListener("mousemove", l), document.addEventListener("mousedown", l), document.addEventListener("mouseup", l), document.addEventListener("pointermove", l), document.addEventListener("pointerdown", l), document.addEventListener("pointerup", l), document.addEventListener("touchmove", l), document.addEventListener("touchstart", l), document.addEventListener("touchend", l) } function m() { document.removeEventListener("mousemove", l), document.removeEventListener("mousedown", l), document.removeEventListener("mouseup", l), document.removeEventListener("pointermove", l), document.removeEventListener("pointerdown", l), document.removeEventListener("pointerup", l), document.removeEventListener("touchmove", l), document.removeEventListener("touchstart", l), document.removeEventListener("touchend", l) } function l(e) { e.target.nodeName && "html" === e.target.nodeName.toLowerCase() || (v = !1, m()) } var v = !0, f = !1, E = null, L = { text: !0, search: !0, url: !0, tel: !0, email: !0, password: !0, number: !0, date: !0, month: !0, week: !0, time: !0, datetime: !0, "datetime-local": !0 }; document.addEventListener("keydown", s, !0), document.addEventListener("mousedown", d, !0), document.addEventListener("pointerdown", d, !0), document.addEventListener("touchstart", d, !0), document.addEventListener("visibilitychange", c, !0), r(), e.addEventListener("focus", a, !0), e.addEventListener("blur", u, !0), e.nodeType === Node.DOCUMENT_FRAGMENT_NODE && e.host ? e.host.setAttribute("data-js-focus-visible", "") : e.nodeType === Node.DOCUMENT_NODE && (document.documentElement.classList.add("js-focus-visible"), document.documentElement.setAttribute("data-js-focus-visible", "")) } if ("undefined" != typeof window && "undefined" != typeof document) { var event; window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill; try { event = new CustomEvent("focus-visible-polyfill-ready") } catch (e) { event = document.createEvent("CustomEvent"), event.initCustomEvent("focus-visible-polyfill-ready", !1, !1, {}) } window.dispatchEvent(event) } "undefined" != typeof document && applyFocusVisiblePolyfill(document); })();